.osd-monitor-label { font-size: 3em; }
.level {
height: 0.6em;
- border-radius: 0.3em;
- background-color: transparentize(darken($osd_bg_color,15%),0.5);
- color: $osd_fg_color;
- }
- .level-bar {
- background-color: $osd_fg_color;
- border-radius: 0.3em;
+ -barlevel-height: 0.6em;
+ -barlevel-background-color: transparentize(darken($osd_bg_color,15%),0.5);
+ -barlevel-active-background-color: $osd_fg_color;
}
}
let barLevelColor = themeNode.get_color('-barlevel-background-color');
let barLevelActiveColor = themeNode.get_color('-barlevel-active-background-color');
- let barLevelBorderWidth = themeNode.get_length('-barlevel-border-width');
- let barLevelBorderColor = themeNode.get_color('-barlevel-border-color');
- let barLevelActiveBorderColor = themeNode.get_color('-barlevel-active-border-color');
+ let barLevelBorderWidth = Math.min(themeNode.get_length('-barlevel-border-width'), 1);
+ let [hasBorderColor, barLevelBorderColor] =
+ themeNode.lookup_color('-barlevel-border-color', false);
+ if (!hasBorderColor)
+ barLevelBorderColor = barLevelColor;
+ let [hasActiveBorderColor, barLevelActiveBorderColor] =
+ themeNode.lookup_color('-barlevel-active-border-color', false);
+ if (!hasActiveBorderColor)
+ barLevelActiveBorderColor = barLevelActiveColor;
const TAU = Math.PI * 2;
const GLib = imports.gi.GLib;
const St = imports.gi.St;
+const BarLevel = imports.ui.barLevel;
const Lang = imports.lang;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
var LevelBar = new Lang.Class({
Name: 'LevelBar',
+ Extends: BarLevel.BarLevel,
_init() {
this._level = 0;
- this.actor = new St.Bin({ style_class: 'level',
- x_align: St.Align.START,
- y_fill: true });
- this._bar = new St.Widget({ style_class: 'level-bar' });
+ let params = {
+ styleClass: 'level',
+ }
+ this.parent(this._level, params);
- this.actor.set_child(this._bar);
+ this.actor.accessible_name = _("Volume");
this.actor.connect('notify::width', () => { this.level = this.level; });
},
set level(value) {
this._level = Math.max(0, Math.min(value, 100));
- let alloc = this.actor.get_allocation_box();
- let newWidth = Math.round((alloc.x2 - alloc.x1) * this._level / 100);
- if (newWidth != this._bar.width)
- this._bar.width = newWidth;
+ this.setValue(this._level / 100);
}
});